<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Django 1.7.1 release notes &mdash; Django 1.7.8.dev20150401230226 documentation</title>
    
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '1.7.8.dev20150401230226',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <link rel="top" title="Django 1.7.8.dev20150401230226 documentation" href="../index.html" />
    <link rel="up" title="Release notes" href="index.html" />
    <link rel="next" title="Django 1.7 release notes" href="1.7.html" />
    <link rel="prev" title="Django 1.7.2 release notes" href="1.7.2.html" />



 
<script type="text/javascript" src="../templatebuiltins.js"></script>
<script type="text/javascript">
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);
</script>


  </head>
  <body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../index.html">Django 1.7.8.dev20150401230226 documentation</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../index.html">Home</a>  |
        <a title="Table of contents" href="../contents.html">Table of contents</a>  |
        <a title="Global index" href="../genindex.html">Index</a>  |
        <a title="Module index" href="../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="1.7.2.html" title="Django 1.7.2 release notes">previous</a>
     |
    <a href="index.html" title="Release notes" accesskey="U">up</a>
   |
    <a href="1.7.html" title="Django 1.7 release notes">next</a> &raquo;</div>
    </div>

    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="releases-1.7.1">
            
  <div class="section" id="s-django-1-7-1-release-notes">
<span id="django-1-7-1-release-notes"></span><h1>Django 1.7.1 release notes<a class="headerlink" href="#django-1-7-1-release-notes" title="Permalink to this headline">¶</a></h1>
<p><em>October 22, 2014</em></p>
<p>Django 1.7.1 fixes several bugs in 1.7.</p>
<div class="section" id="s-bugfixes">
<span id="bugfixes"></span><h2>Bugfixes<a class="headerlink" href="#bugfixes" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Allowed related many-to-many fields to be referenced in the admin
(<a class="reference external" href="https://code.djangoproject.com/ticket/23604">#23604</a>).</li>
<li>Added a more helpful error message if you try to migrate an app without first
creating the <tt class="docutils literal"><span class="pre">contenttypes</span></tt> table (<a class="reference external" href="https://code.djangoproject.com/ticket/22411">#22411</a>).</li>
<li>Modified migrations dependency algorithm to avoid possible infinite recursion.</li>
<li>Fixed a <tt class="docutils literal"><span class="pre">UnicodeDecodeError</span></tt> when the <tt class="docutils literal"><span class="pre">flush</span></tt> error message contained
Unicode characters (<a class="reference external" href="https://code.djangoproject.com/ticket/22882">#22882</a>).</li>
<li>Reinstated missing <tt class="docutils literal"><span class="pre">CHECK</span></tt> SQL clauses which were omitted on some backends
when not using migrations (<a class="reference external" href="https://code.djangoproject.com/ticket/23416">#23416</a>).</li>
<li>Fixed serialization of <tt class="docutils literal"><span class="pre">type</span></tt> objects in migrations (<a class="reference external" href="https://code.djangoproject.com/ticket/22951">#22951</a>).</li>
<li>Allowed inline and hidden references to admin fields (<a class="reference external" href="https://code.djangoproject.com/ticket/23431">#23431</a>).</li>
<li>The <tt class="docutils literal"><span class="pre">&#64;deconstructible</span></tt> decorator now fails with a <tt class="docutils literal"><span class="pre">ValueError</span></tt> if the
decorated object cannot automatically be imported (<a class="reference external" href="https://code.djangoproject.com/ticket/23418">#23418</a>).</li>
<li>Fixed a typo in an <tt class="docutils literal"><span class="pre">inlineformset_factory()</span></tt> error message that caused a
crash (<a class="reference external" href="https://code.djangoproject.com/ticket/23451">#23451</a>).</li>
<li>Restored the ability to use <a class="reference internal" href="../ref/settings.html#std:setting-ABSOLUTE_URL_OVERRIDES"><tt class="xref std std-setting docutils literal"><span class="pre">ABSOLUTE_URL_OVERRIDES</span></tt></a> with the
<tt class="docutils literal"><span class="pre">'auth.User'</span></tt> model (<a class="reference external" href="https://code.djangoproject.com/ticket/11775">#11775</a>). As a side effect, the setting now
adds a <tt class="docutils literal"><span class="pre">get_absolute_url()</span></tt> method to any model that appears in
<tt class="docutils literal"><span class="pre">ABSOLUTE_URL_OVERRIDES</span></tt> but doesn&#8217;t define <tt class="docutils literal"><span class="pre">get_absolute_url()</span></tt>.</li>
<li>Avoided masking some <cite>ImportError</cite> exceptions during application loading
(<a class="reference external" href="https://code.djangoproject.com/ticket/22920">#22920</a>).</li>
<li>Empty <tt class="docutils literal"><span class="pre">index_together</span></tt> or <tt class="docutils literal"><span class="pre">unique_together</span></tt> model options no longer
results in infinite migrations (<a class="reference external" href="https://code.djangoproject.com/ticket/23452">#23452</a>).</li>
<li>Fixed crash in <tt class="docutils literal"><span class="pre">contrib.sitemaps</span></tt> if <tt class="docutils literal"><span class="pre">lastmod</span></tt> returned a <tt class="docutils literal"><span class="pre">date</span></tt> rather
than a <tt class="docutils literal"><span class="pre">datetime</span></tt> (<a class="reference external" href="https://code.djangoproject.com/ticket/23403">#23403</a>).</li>
<li>Allowed migrations to work with <tt class="docutils literal"><span class="pre">app_label</span></tt>s that have the same last
part (e.g. <tt class="docutils literal"><span class="pre">django.contrib.auth</span></tt> and <tt class="docutils literal"><span class="pre">vendor.auth</span></tt>) (<a class="reference external" href="https://code.djangoproject.com/ticket/23483">#23483</a>).</li>
<li>Restored the ability to deepcopy <tt class="docutils literal"><span class="pre">F</span></tt> objects (<a class="reference external" href="https://code.djangoproject.com/ticket/23492">#23492</a>).</li>
<li>Formats for Welsh (<tt class="docutils literal"><span class="pre">cy</span></tt>) and several Chinese locales (<tt class="docutils literal"><span class="pre">zh_CN</span></tt>,
<tt class="docutils literal"><span class="pre">zh_Hans</span></tt>, <tt class="docutils literal"><span class="pre">zh_Hant</span></tt> and <tt class="docutils literal"><span class="pre">zh_TW</span></tt>) have been added. Formats for
Macedonian have been fixed (trailing dot removed, <a class="reference external" href="https://code.djangoproject.com/ticket/23532">#23532</a>).</li>
<li>Added quoting of constraint names in the SQL generated by migrations to
prevent crash with uppercase characters in the name (<a class="reference external" href="https://code.djangoproject.com/ticket/23065">#23065</a>).</li>
<li>Fixed renaming of models with a self-referential many-to-many field
(<tt class="docutils literal"><span class="pre">ManyToManyField('self')</span></tt>) (<a class="reference external" href="https://code.djangoproject.com/ticket/23503">#23503</a>).</li>
<li>Added the <a class="reference internal" href="../ref/contrib/admin/index.html#django.contrib.admin.InlineModelAdmin.get_extra" title="django.contrib.admin.InlineModelAdmin.get_extra"><tt class="xref py py-meth docutils literal"><span class="pre">get_extra()</span></tt></a>,
<a class="reference internal" href="../ref/contrib/admin/index.html#django.contrib.admin.InlineModelAdmin.get_max_num" title="django.contrib.admin.InlineModelAdmin.get_max_num"><tt class="xref py py-meth docutils literal"><span class="pre">get_max_num()</span></tt></a>, and
<a class="reference internal" href="../ref/contrib/admin/index.html#django.contrib.admin.InlineModelAdmin.get_min_num" title="django.contrib.admin.InlineModelAdmin.get_min_num"><tt class="xref py py-meth docutils literal"><span class="pre">get_min_num()</span></tt></a> hooks to
<a class="reference internal" href="../ref/contrib/contenttypes.html#django.contrib.contenttypes.admin.GenericInlineModelAdmin" title="django.contrib.contenttypes.admin.GenericInlineModelAdmin"><tt class="xref py py-class docutils literal"><span class="pre">GenericInlineModelAdmin</span></tt></a>
(<a class="reference external" href="https://code.djangoproject.com/ticket/23539">#23539</a>).</li>
<li>Made <tt class="docutils literal"><span class="pre">migrations.RunSQL</span></tt> no longer require percent sign escaping. This is
now consistent with <tt class="docutils literal"><span class="pre">cursor.execute()</span></tt> (<a class="reference external" href="https://code.djangoproject.com/ticket/23426">#23426</a>).</li>
<li>Made the <a class="reference internal" href="../ref/settings.html#std:setting-TEST_SERIALIZE"><tt class="xref std std-setting docutils literal"><span class="pre">SERIALIZE</span></tt></a> entry in the
<a class="reference internal" href="../ref/settings.html#std:setting-DATABASE-TEST"><tt class="xref std std-setting docutils literal"><span class="pre">TEST</span></tt></a> dictionary usable (<a class="reference external" href="https://code.djangoproject.com/ticket/23421">#23421</a>).</li>
<li>Fixed bug in migrations that prevented foreign key constraints to unmanaged
models with a custom primary key (<a class="reference external" href="https://code.djangoproject.com/ticket/23415">#23415</a>).</li>
<li>Added <tt class="docutils literal"><span class="pre">SchemaEditor</span></tt> for MySQL GIS backend so that spatial indexes will be
created for apps with migrations (<a class="reference external" href="https://code.djangoproject.com/ticket/23538">#23538</a>).</li>
<li>Added <tt class="docutils literal"><span class="pre">SchemaEditor</span></tt> for Oracle GIS backend so that spatial metadata and
indexes will be created for apps with migrations (<a class="reference external" href="https://code.djangoproject.com/ticket/23537">#23537</a>).</li>
<li>Coerced the <tt class="docutils literal"><span class="pre">related_name</span></tt> model field option to unicode during migration
generation to generate migrations that work with both Python 2 and 3
(<a class="reference external" href="https://code.djangoproject.com/ticket/23455">#23455</a>).</li>
<li>Fixed <tt class="docutils literal"><span class="pre">MigrationWriter</span></tt> to handle builtin types without imports
(<a class="reference external" href="https://code.djangoproject.com/ticket/23560">#23560</a>).</li>
<li>Fixed <tt class="docutils literal"><span class="pre">deepcopy</span></tt> on <tt class="docutils literal"><span class="pre">ErrorList</span></tt> (<a class="reference external" href="https://code.djangoproject.com/ticket/23594">#23594</a>).</li>
<li>Made the <a class="reference internal" href="../ref/contrib/admin/admindocs.html#module-django.contrib.admindocs" title="django.contrib.admindocs: Django's admin documentation generator."><tt class="xref py py-mod docutils literal"><span class="pre">admindocs</span></tt></a> view to browse view details check
if the view specified in the URL exists in the URLconf. Previously it was
possible to import arbitrary packages from the Python path. This was not
considered a security issue because <tt class="docutils literal"><span class="pre">admindocs</span></tt> is only accessible to staff
users (<a class="reference external" href="https://code.djangoproject.com/ticket/23601">#23601</a>).</li>
<li>Fixed <tt class="docutils literal"><span class="pre">UnicodeDecodeError</span></tt> crash in <tt class="docutils literal"><span class="pre">AdminEmailHandler</span></tt> with non-ASCII
characters in the request (<a class="reference external" href="https://code.djangoproject.com/ticket/23593">#23593</a>).</li>
<li>Fixed missing <tt class="docutils literal"><span class="pre">get_or_create</span></tt> and <tt class="docutils literal"><span class="pre">update_or_create</span></tt> on related managers
causing <tt class="docutils literal"><span class="pre">IntegrityError</span></tt> (<a class="reference external" href="https://code.djangoproject.com/ticket/23611">#23611</a>).</li>
<li>Made <a class="reference internal" href="../ref/utils.html#django.utils.http.urlsafe_base64_decode" title="django.utils.http.urlsafe_base64_decode"><tt class="xref py py-func docutils literal"><span class="pre">urlsafe_base64_decode()</span></tt></a> return the proper
type (byte string) on Python 3 (<a class="reference external" href="https://code.djangoproject.com/ticket/23333">#23333</a>).</li>
<li><a class="reference internal" href="../ref/django-admin.html#django-admin-makemigrations"><tt class="xref std std-djadmin docutils literal"><span class="pre">makemigrations</span></tt></a> can now serialize timezone-aware values (<a class="reference external" href="https://code.djangoproject.com/ticket/23365">#23365</a>).</li>
<li>Added a prompt to the migrations questioner when removing the null constraint
from a field to prevent an IntegrityError on existing NULL rows
(<a class="reference external" href="https://code.djangoproject.com/ticket/23609">#23609</a>).</li>
<li>Fixed generic relations in <tt class="docutils literal"><span class="pre">ModelAdmin.list_filter</span></tt> (<a class="reference external" href="https://code.djangoproject.com/ticket/23616">#23616</a>).</li>
<li>Restored RFC compliance for the SMTP backend on Python 3 (<a class="reference external" href="https://code.djangoproject.com/ticket/23063">#23063</a>).</li>
<li>Fixed a crash while parsing cookies containing invalid content
(<a class="reference external" href="https://code.djangoproject.com/ticket/23638">#23638</a>).</li>
<li>The system check framework now raises error <strong>models.E020</strong> when the
class method <tt class="docutils literal"><span class="pre">Model.check()</span></tt> is unreachable (<a class="reference external" href="https://code.djangoproject.com/ticket/23615">#23615</a>).</li>
<li>Made the Oracle test database creation drop the test user in the event of an
unclean exit of a previous test run (<a class="reference external" href="https://code.djangoproject.com/ticket/23649">#23649</a>).</li>
<li>Fixed <a class="reference internal" href="../ref/django-admin.html#django-admin-makemigrations"><tt class="xref std std-djadmin docutils literal"><span class="pre">makemigrations</span></tt></a> to detect changes to
<a class="reference internal" href="../ref/models/options.html#django.db.models.Options.db_table" title="django.db.models.Options.db_table"><tt class="xref py py-attr docutils literal"><span class="pre">Meta.db_table</span></tt></a> (<a class="reference external" href="https://code.djangoproject.com/ticket/23629">#23629</a>).</li>
<li>Fixed a regression when feeding the Django test client with an empty data
string (<a class="reference external" href="https://code.djangoproject.com/ticket/21740">#21740</a>).</li>
<li>Fixed a regression in <a class="reference internal" href="../ref/django-admin.html#django-admin-makemessages"><tt class="xref std std-djadmin docutils literal"><span class="pre">makemessages</span></tt></a> where static files were
unexpectedly ignored (<a class="reference external" href="https://code.djangoproject.com/ticket/23583">#23583</a>).</li>
</ul>
</div>
</div>


          </div>
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../contents.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Django 1.7.1 release notes</a><ul>
<li><a class="reference internal" href="#bugfixes">Bugfixes</a></li>
</ul>
</li>
</ul>

  <h3>Browse</h3>
  <ul>
    
      <li>Prev: <a href="1.7.2.html">Django 1.7.2 release notes</a></li>
    
    
      <li>Next: <a href="1.7.html">Django 1.7 release notes</a></li>
    
  </ul>
  <h3>You are here:</h3>
  <ul>
      <li>
        <a href="../index.html">Django 1.7.8.dev20150401230226 documentation</a>
        
          <ul><li><a href="index.html">Release notes</a>
        
        <ul><li>Django 1.7.1 release notes</li></ul>
        </li></ul>
      </li>
  </ul>

  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="../_sources/releases/1.7.1.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">Apr 02, 2015</p>
          </div>
        
      
    </div>

    <div id="ft">
      <div class="nav">
    &laquo; <a href="1.7.2.html" title="Django 1.7.2 release notes">previous</a>
     |
    <a href="index.html" title="Release notes" accesskey="U">up</a>
   |
    <a href="1.7.html" title="Django 1.7 release notes">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>